package org.example.spring.ioc.controller;

import lombok.Data;
import lombok.ToString;
import org.example.spring.ioc.bean.Person;
import org.example.spring.ioc.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Controller;

import java.util.List;
import java.util.Map;

@ToString
@Data
@Controller
public class UserController{

    /**
     * 自动装配流程（先按照类型，再按照名称）
     *    1. 先按照类型从容器中获取组件
     *      1.1只有且找到一个组件，则直接使用，名字无所谓
     *      1.2找到多个组件，按照属性名称匹配,变量名就是名字
     *          1.2.1如果找到：注入
     *          1.2.2如果没找到：报错
     *
     */

    @Autowired//自动装配   原理：Spring 调用容器的getBean
    UserService userService;


    @Autowired
    Person bill;


    @Autowired//把这个类型的所有组件全部拿过来
    List<Person> personList;

    @Autowired
    Map<String, Person> personMap;

    @Autowired//把整个容器拿过来
    ApplicationContext applicationContext;
}
